package com.bjsxt;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**单向通信：通信双方中，一方固定为发送端，一方则固定为接收端
 * 创建服务端*/
/*先启动服务端，再启动客户端*/
public class OneWaySocketServer {
    public static void main(String[] args) {
        Socket socket = null;
        BufferedReader br = null;
        PrintWriter pw = null;
        try{
            ServerSocket serverSocket = new ServerSocket(9999);
            System.out.println("服务器启动，开始监听。。。。。");
            //开始端口的监听  客户端没有发送信息时，处于阻塞状态 accept()返回Socket
            socket = serverSocket.accept();
            System.out.println("连接成功");
            //Socket得到的是字节流，字节转字符流
            //读取客户端发送的消息
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //向客户端写回消息的流对象
            pw = new PrintWriter(socket.getOutputStream());
            //服务端一直等待客户端发送消息  所以用无限循环
            while (true){
                String str = br.readLine();
                System.out.println("客户端说："+str);
                if("exit".equals(str)){
                    break;
                }
                //在服务端中，把客户端输入的内容，再写回给客户端
                pw.println(str);
                pw.flush();//刷新
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(br != null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(pw != null){
                pw.close();
            }
            if(socket != null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
